<?php

/**
 * @author PeoneEr
 * @package aion personal cabinet v1.0
 * @copyright Aion Factory Inc. 2010-2011
 * @license GNU v3
 * @link Ai-Factory.ru && http://code.google.com/p/aionprivateofficev2
 */
require_once "core/application/models/mchangegender/mchangegender.php";
require_once "core/application/controllers/cmoney.php";
require_once "core/application/classes/errorClass.php";
require_once "core/application/classes/selectValueClass.php";
require_once "core/application/classes/isOnlineClass.php";

class changeGender_Controller extends ChangeGender_Model {

    private static $_instance = NULL;
    public $_lang             = NULL;
    private $_gender          = NULL;
    private $_params       = array();
    private $_balance            = 0;
    private $_newBalance         = 0;
    private $_value           = NULL;

    public static function getInstance() {
        if (is_null(self::$_instance)) {
            $class = __CLASS__;
            self::$_instance = new $class();
        }
        return self::$_instance;
    }

    

    private function getValue($param) {
        /**
         * @param int $param
         */
        $this->_value = valueSelect::selectValue($param);
        return $this->_value;
    }

    private function catchParams() {
        /**
         *  ловит параметры
         */
        $params = array(
            'nick' => $_POST['nick'],
            'gender' => $_POST['gender']
        );
        return $params;
    }

    public function getGenderFromModel($nick) {
        /**
         *  Получаем пол чара
         */
        if (empty($nick) || !isset($nick) || is_null($nick)) {
            $this->echoError('Не выбран персонаж');
        }
        return $this->getGender($nick);
    }

    public function charsGetting() {
        /**
         *  получаем список чаров
         */
        $chars = $this->getChars();
        foreach ($chars as $key => $val) {
            echo "<option value='" . $val . "'>" . $val . "</option>";
        }
    }

    public function changeGender() {
        /**
         *  основная функция смены пола у персонажа
         */
        $this->_lang = $this->getLanguage();
        $this->_params = $this->catchParams();
        $this->_balance = Cmoney::getInstance()->showMoney();
        if ($this->_balance < $this->getValue(16)) { //Если кол-во предметов меньше того, что необходимо то выходим.
            $this->echoError("
        У Вас недостаточно средств  для смены пола персонажу 
        <b>" . $this->_params['nick'] . "</b> 
            <br />               
        Необходимо " . $this->getValue(16) . ", а у Вас " . $this->_balance);
        }
//Если чар в онлайне - выходим
        if (isOnline::getInstance()->online($this->_params['nick'])) {
            $this->echoError("Персонаж " . $this->_params['nick'] . " находится в игре");
        }
//Проверяем, не пустые ли параметры (на всякий)
        foreach ($this->_params as $key => $val) {
            if (empty($val) || !isset($val) || is_null($val)) {
                $this->echoError("Не выбран персонаж или пол");
            }
        }
//Задаем русские значения для полов
        switch ($this->_params['gender']) {
            case "MALE": $this->_gender = " мужской";
                break;
            case "FEMALE": $this->_gender = " женский";
                break;
        }
//Если не был выбран чар - выходим (грубая проверка)
        if ($this->_params['nick'] == "Выбрать персонажа")
            $this->echoError("Вы не выбрали персонажа");
        $this->_newBalance = $this->_balance - $this->getValue(16);
//Если изменение было удачным - оповещаем радостного игрока
        try {
            Cmoney::getInstance()->updateMoney($this->_newBalance);
            try {
                $this->changeGenderInDB($this->_params['gender'], $this->_params['nick']);
                $this->echoSuccess("Пол персонажу " . $this->_params['nick'] . " успешно изменен.
                <br /> Теперь у " . $this->_params['nick'] . "<b>" . $this->_gender . "</b> пол
                    <br /> " . $this->getValue(16) . " было списано с Вашего счета, " . $this->_newBalance . " у Вас осталось на счету");
            } catch (Exception $e) {
                echo $e->getMessage();
                error::getInstance($this->_lang->language['defaultError']);
            }
        } catch (Exception $e) {
            echo $e->getMessage();
            error::getInstance($this->_lang->language['defaultError']);
        }
    }

}